package simulation_problem2017;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * Created by Hyman on 2017/3/22.
 *
 * https://www.nowcoder.com/question/next?pid=4236887&qid=78088&tid=7362217
 * 牛牛的好朋友羊羊在纸上写了n+1个整数，羊羊接着抹除掉了一个整数，给牛牛猜他抹除掉的数字是什么。
 * 牛牛知道羊羊写的整数神排序之后是一串连续的正整数，牛牛现在要猜出所有可能是抹除掉的整数。例如：
 *  10 7 12 8 11 那么抹除掉的整数只可能是9
 *  5 6 7 8 那么抹除掉的整数可能是4也可能是9
 *
 * 输入描述: 输入包括2行：
 *  第一行为整数n(1 <= n <= 50)，即抹除一个数之后剩下的数字个数
 *  第二行为n个整数num[i] (1 <= num[i] <= 1000000000)
 * 输出描述:
 *  在一行中输出所有可能是抹除掉的数,从小到大输出,用空格分割,行末无空格。如果没有可能的数，则输出mistake
 *
 * 输入例子:
 *  2
 *  3 6
 * 输出例子:
 *  mistake
 */
public class GuessContinuousNumber {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        int num = Integer.parseInt(scanner.nextLine());

        List<BigInteger> list = new ArrayList<>();
        while(num > 0) {
            BigInteger bi = scanner.nextBigInteger();
            list.add(bi);
            num--;
        }

        List<BigInteger> result = getPossibleNum(list);

        if(result == null || result.isEmpty()) {
            System.out.println("mistake");
        } else {
            StringBuffer sb = new StringBuffer();
            for(int i=0; i<result.size(); i++) {
                sb.append(result.get(i).toString() + " ");
            }
            System.out.print(sb.toString().trim());
        }

    }

    private static List<BigInteger> getPossibleNum(List<BigInteger> list) {

        List<BigInteger> result = new ArrayList<>();

        int num = list.size();
        for (int i=num-1; i>0; i--) {
            for(int j=0; j<i; j++) {
                if(list.get(j+1).compareTo(list.get(j)) < 0) {
                    BigInteger temp = list.get(j);
                    list.set(j, list.get(j+1));
                    list.set(j+1, temp);
                }
            }
        }

        for (int k=0; k<num-1; k++) {

            if(list.get(k+1).compareTo(list.get(k).add(BigInteger.ONE)) == 0) {
                continue;
            } else if(list.get(k+1).compareTo(list.get(k).add(BigInteger.ONE).add(BigInteger.ONE)) == 0) {
                result.add(list.get(k).add(BigInteger.ONE));
            } else {
                return null;
            }
        }

        if(result.size() >= 2) {
            return null;
        }
        if(result.isEmpty()) {
            //正整数
            if(list.get(0).compareTo(BigInteger.ONE) > 0) {
                result.add(list.get(0).subtract(BigInteger.ONE));
            }
            result.add(list.get(num-1).add(BigInteger.ONE));
        }

        return result;
    }
}
